package RecursionP;

/**
 * 递归求和
 * 递归思想的一个基本形式是：
 * 在一个函数中，有至少一条语句，又会去调用该函数自身。
 * 但是，从代码角度来说，如果单纯是函数内部调用函数本身，
 * 则会出现“出不来”的现象。
 * 则我们终止（停止）这种调用——找到递归函数的出口。
 *
 */
public class Sum {


    //解决最基本的问题
    public static int sum(int[] arr){
        return sum(arr,0);
    }

    // 计算arr[l...n)这个区间内所有数字的和
    //通过函数调用，找到函数的出口
    private static int sum(int []arr ,int l){
        if (l==arr.length){
            return 0;
        }
        return arr[l]+sum(arr,l+1);
    }

    public static void main(String[] args) {
        int [] nums={1,2,3,4,5,6,7,8,9};
        System.out.println(sum(nums));

    }


}
